home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / Dev / Triton / Developer / DemoSource / demo.c next >
C/C++ Source or Header  |  1995-06-28  |  42KB  |  1,259 lines

  1. /*
  2.  *  Triton - The object oriented GUI creation system for the Amiga
  3.  *  Written by Stefan Zeiger in 1993-1995
  4.  *
  5.  *  (c) 1993-1995 by Stefan Zeiger
  6.  *  You are hereby allowed to use this source or parts
  7.  *  of it for creating programs for AmigaOS which use the
  8.  *  Triton GUI creation system. All other rights reserved.
  9.  *
  10.  *  demo.c - Triton demo program
  11.  *
  12.  */
  13.  
  14.  
  15. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  16. /* ////////////////////////////////////////////////////////////////////////////////// Include our stuff // */
  17. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  18.  
  19. #include <stdio.h>
  20. #include <stdlib.h>
  21. #include <string.h>
  22.  
  23. #include <libraries/triton.h>
  24.  
  25. #ifdef __GNUC__
  26.  
  27. #ifndef __OPTIMIZE__
  28. #include <clib/triton_protos.h>
  29. #include <clib/dos_protos.h>
  30. #include <clib/intuition_protos.h>
  31. #else
  32. #include <inline/triton.h>
  33. #include <inline/dos.h>
  34. #include <inline/intuition.h>
  35. #endif /* __OPTIMIZE__ */
  36.  
  37. #else
  38. #include <proto/triton.h>
  39. #include <proto/dos.h>
  40. #include <proto/intuition.h>
  41.  
  42. #endif /* __GNUC__ */
  43.  
  44.  
  45. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  46. /* //////////////////////////////////////////////////////////////////////////// Disable CTRL-C handling // */
  47. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  48.  
  49. #ifdef __GNUC__
  50. __chkabort(){}
  51. #else
  52. #ifdef __SASC__
  53. int CXBRK(void) { return(0); }
  54. int chkabort(void) { return(0); }
  55. #endif
  56. #endif
  57.  
  58.  
  59. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  60. /* /////////////////////////////////////////////////////////////////////////////////// Global variables // */
  61. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  62.  
  63. struct TR_Project *main_project;
  64.  
  65.  
  66. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  67. /* //////////////////////////////////////////////////////////////////////////////////// Window 'groups' // */
  68. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  69.  
  70. ProjectDefinition(groups_trwintags)
  71. {
  72.   WindowTitle("Groups"), WindowPosition(TRWP_CENTERDISPLAY), WindowUnderscore("~"), WindowID(1),
  73.  
  74.   HorizGroupA, Space, VertGroupA,
  75.     Space,
  76.  
  77.     NamedFrameBox("TRGR_PROPSHARE (default)"), ObjectBackfillWin, VertGroupA, Space, HorizGroupC,
  78.       Space,
  79.       Button("Short",1),
  80.       Space,
  81.       Button("And much, much longer...",2),
  82.       Space,
  83.       EndGroup, Space, EndGroup,
  84.  
  85.     Space,
  86.  
  87.     NamedFrameBox("TRGR_EQUALSHARE"), ObjectBackfillWin, VertGroupA, Space, HorizGroupEC,
  88.       Space,
  89.       Button("Short",3),
  90.       Space,
  91.       Button("And much, much longer...",4),
  92.       Space,
  93.       EndGroup, Space, EndGroup,
  94.  
  95.     Space,
  96.  
  97.     NamedFrameBox("TRGR_PROPSPACES"), ObjectBackfillWin, VertGroupA, Space, HorizGroupSC,
  98.       Space,
  99.       Button("Short",5),
  100.       Space,
  101.       Button("And much, much longer...",6),
  102.       Space,
  103.       EndGroup, Space, EndGroup,
  104.  
  105.     Space,
  106.  
  107.     NamedFrameBox("TRGR_ARRAY"), ObjectBackfillWin, VertGroupA, Space, LineArray,
  108.       BeginLine,
  109.         Space,
  110.         Button("Short",7),
  111.         Space,
  112.         Button("And much, much longer...",8),
  113.         Space,
  114.         EndLine,
  115.       Space,
  116.       BeginLine,
  117.         Space,
  118.         Button("Not so short",9),
  119.         Space,
  120.         Button("And a bit longer...",10),
  121.         Space,
  122.         EndLine,
  123.       Space,
  124.       BeginLineI,
  125.         NamedSeparator("An independent line"),
  126.         EndLine,
  127.       Space,
  128.       BeginLine,
  129.         Space,
  130.         Button("foo bar",12),
  131.         Space,
  132.         Button("42",13),
  133.         Space,
  134.         EndLine,
  135.       EndArray, Space, EndGroup,
  136.  
  137.     Space,
  138.     EndGroup, Space, EndGroup,
  139.   EndProject
  140. };
  141.  
  142.  
  143. VOID do_groups(VOID)
  144. {
  145.   BOOL close_me=FALSE;
  146.   struct TR_Message *trmsg;
  147.   struct TR_Project *groups_project;
  148.  
  149.   if(groups_project=TR_OpenProject(Application,groups_trwintags))
  150.   {
  151.     TR_LockProject(main_project);
  152.     while(!close_me)
  153.     {
  154.       TR_Wait(Application,NULL);
  155.       while(trmsg=TR_GetMsg(Application))
  156.       {
  157.         if(trmsg->trm_Project==groups_project) switch(trmsg->trm_Class)
  158.         {
  159.           case TRMS_CLOSEWINDOW:
  160.             close_me=TRUE;
  161.             break;
  162.  
  163.           case TRMS_ERROR:
  164.             puts(TR_GetErrorString(trmsg->trm_Data));
  165.             break;
  166.         }
  167.         TR_ReplyMsg(trmsg);
  168.       }
  169.     }
  170.     TR_UnlockProject(main_project);
  171.     TR_CloseProject(groups_project);
  172.   }
  173.   else DisplayBeep(NULL);
  174. }
  175.  
  176.  
  177. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  178. /* ///////////////////////////////////////////////////////////////////////////////////// Window 'menus' // */
  179. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  180.  
  181. struct TagItem menus_trwintags[]=
  182. {
  183.   WindowID(2), WindowTitle("Menus"),
  184.  
  185.   TRMN_Title,                 (ULONG) "A menu",
  186.    TRMN_Item,                 (ULONG) "A simple item", TRAT_ID, 1,
  187.    TRMN_Item,                 (ULONG) "Another item", TRAT_ID, 2,
  188.    TRMN_Item,                 (ULONG) "And now... a barlabel", TRAT_ID, 3,
  189.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  190.    TRMN_Item,                 (ULONG) "1_An item with a shortcut", TRAT_ID, 4,
  191.    TRMN_Item,                 (ULONG) "2_Another one", TRAT_ID, 5,
  192.    TRMN_Item,                 (ULONG) "3_And number 3", TRAT_ID, 6,
  193.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  194.    TRMN_Item,                 (ULONG) "_F1_And under OS3.0: Extended command keys", TRAT_ID, 6,
  195.    TRMN_Item,                 (ULONG) "_F2_Another one", TRAT_ID, 7,
  196.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  197.    TRMN_Item,                 (ULONG) "How do you like submenus?",
  198.     TRMN_Sub,                 (ULONG) "G_Great!", TRAT_ID, 8,
  199.     TRMN_Sub,                 (ULONG) "F_Fine", TRAT_ID, 9,
  200.     TRMN_Sub,                 (ULONG) "D_Don't know", TRAT_ID, 10,
  201.     TRMN_Sub,                 (ULONG) "N_Not so fine", TRAT_ID, 11,
  202.     TRMN_Sub,                 (ULONG) "P_Puke!", TRAT_ID, 12,
  203.  
  204.   TRMN_Title,                 (ULONG) "Another menu",
  205.    TRMN_Item,                 (ULONG) "This item is ghosted", TRMN_Flags, TRMF_DISABLED, TRAT_ID, 100,
  206.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  207.    TRMN_Item,                 (ULONG) "Item 1 is checked", TRMN_Flags, TRMF_CHECKED, TRAT_ID, 13,
  208.    TRMN_Item,                 (ULONG) "Item 2 can be checked, too", TRMN_Flags, TRMF_CHECKIT, TRAT_ID, 14,
  209.  
  210.   TRMN_Title,                 (ULONG) "Ghosted menu",
  211.   TRMN_Flags,                 (ULONG) TRMF_DISABLED,
  212.    TRMN_Item,                 (ULONG) "Item 1", TRAT_ID, 101,
  213.    TRMN_Item,                 (ULONG) "Item 2", TRAT_ID, 102,
  214.  
  215.   TAG_END
  216. };
  217.  
  218.  
  219. VOID do_menus(VOID)
  220. {
  221.   BOOL close_me=FALSE;
  222.   struct TR_Message *trmsg;
  223.   struct TR_Project *menus_project;
  224.  
  225.   if(menus_project=TR_OpenProject(Application,menus_trwintags))
  226.   {
  227.     TR_LockProject(main_project);
  228.     while(!close_me)
  229.     {
  230.       TR_Wait(Application,NULL);
  231.       while(trmsg=TR_GetMsg(Application))
  232.       {
  233.         if(trmsg->trm_Project==menus_project) switch(trmsg->trm_Class)
  234.         {
  235.           case TRMS_CLOSEWINDOW:
  236.             close_me=TRUE;
  237.             break;
  238.  
  239.           case TRMS_ERROR:
  240.             puts(TR_GetErrorString(trmsg->trm_Data));
  241.             break;
  242.  
  243.           case TRMS_NEWVALUE:
  244.             printf("The new value of object %d is %d.\n",trmsg->trm_ID,trmsg->trm_Data);
  245.             break;
  246.  
  247.           case TRMS_ACTION:
  248.             printf("Object %d has triggered an action.\n",trmsg->trm_ID);
  249.             break;
  250.         }
  251.         TR_ReplyMsg(trmsg);
  252.       } 
  253.     }
  254.     TR_UnlockProject(main_project);
  255.     TR_CloseProject(menus_project);
  256.   }
  257.   else DisplayBeep(NULL);
  258. }
  259.  
  260.  
  261. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  262. /* /////////////////////////////////////////////////////////////////////////////////// Window 'gadgets' // */
  263. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  264.  
  265. STRPTR cycle_entries[]=
  266. {
  267.   "Entry 0",
  268.   "1",
  269.   "2",
  270.   "3",
  271.   "4",
  272.   "5",
  273.   "6",
  274.   "7",
  275.   "8",
  276.   "9",
  277.   NULL
  278. };
  279.  
  280.  
  281. STRPTR mx_entries[]=
  282. {
  283.   "Choice 0",
  284.   "Choice 1",
  285.   "Choice 2",
  286.   NULL
  287. };
  288.  
  289.  
  290. struct TagItem gadgets_trwintags[]=
  291. {
  292.   WindowID(3),
  293.   WindowTitle("Gadgets"),
  294.   WindowPosition(TRWP_CENTERDISPLAY),
  295.  
  296.   TRGR_Vert,                  (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
  297.  
  298.     TROB_Space,               (ULONG) NULL,
  299.  
  300.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  301.       TROB_Space,             (ULONG) NULL,
  302.       TROB_Line,              (ULONG) TROF_HORIZ,
  303.       TROB_Space,             (ULONG) NULL,
  304.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "GadTools", TRAT_Flags, (ULONG) TRTX_TITLE,
  305.       TROB_Space,             (ULONG) NULL,
  306.       TROB_Line,              (ULONG) TROF_HORIZ,
  307.       TROB_Space,             (ULONG) NULL,
  308.     TRGR_End,                 (ULONG) NULL,
  309.  
  310.     TROB_Space,               (ULONG) NULL,
  311.  
  312.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  313.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  314.         TROB_Space,           (ULONG) NULL,
  315.         TROB_CheckBox,        (ULONG) NULL,
  316.           TRAT_ID,            (ULONG) 1,
  317.           TRAT_Value,         (ULONG) TRUE,
  318.       TRGR_End,               (ULONG) NULL,
  319.       TROB_Space,             (ULONG) NULL,
  320.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  321.         TROB_Text,            (ULONG) NULL,
  322.           TRAT_Text,          (ULONG) "_Checkbox",
  323.           TRAT_ID,            (ULONG) 1,
  324.         TROB_Space,           (ULONG) NULL,
  325.       TRGR_End,               (ULONG) NULL,
  326.     TRGR_End,                 (ULONG) NULL,
  327.  
  328.     TROB_Space,               (ULONG) NULL,
  329.  
  330.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  331.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  332.         TROB_Space,           (ULONG) NULL,
  333.         TROB_Slider,          (ULONG) NULL,
  334.           TRAT_ID,            (ULONG) 4,
  335.           TRSL_Min,           (ULONG) 1,
  336.           TRSL_Max,           (ULONG) 3,
  337.           TRAT_Value,         (ULONG) 1,
  338.       TRGR_End,               (ULONG) NULL,
  339.       TROB_Space,             (ULONG) NULL,
  340.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  341.         TROB_Text,            (ULONG) NULL,
  342.           TRAT_Text,          (ULONG) "_Slider: ",
  343.           TRAT_ID,            (ULONG) 4,
  344.         TROB_Text,            (ULONG) NULL,
  345.           TRAT_Value,         (ULONG) 1,
  346.           TRAT_ID,            (ULONG) 4,
  347.           TRAT_MinWidth,      (ULONG) 3,
  348.       TROB_Space,             (ULONG) NULL,
  349.       TRGR_End,               (ULONG) NULL,
  350.     TRGR_End,                 (ULONG) NULL,
  351.  
  352.     TROB_Space,               (ULONG) NULL,
  353.  
  354.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  355.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  356.         TROB_Space,           (ULONG) NULL,
  357.         TROB_Scroller,        (ULONG) NULL,
  358.           TRAT_ID,            (ULONG) 5,
  359.           TRAT_Value,         (ULONG) 2,
  360.           TRSC_Total,         (ULONG) 7,
  361.           TRSC_Visible,       (ULONG) 3,
  362.       TRGR_End,               (ULONG) NULL,
  363.       TROB_Space,             (ULONG) NULL,
  364.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  365.         TROB_Text,            (ULONG) NULL,
  366.           TRAT_Text,          (ULONG) "Sc_roller: ",
  367.           TRAT_ID,            (ULONG) 5,
  368.         TROB_Text,            (ULONG) NULL,
  369.           TRAT_Value,         (ULONG) 2,
  370.           TRAT_ID,            (ULONG) 5,
  371.           TRAT_MinWidth,      (ULONG) 3,
  372.       TROB_Space,             (ULONG) NULL,
  373.       TRGR_End,               (ULONG) NULL,
  374.     TRGR_End,                 (ULONG) NULL,
  375.  
  376.     TROB_Space,               (ULONG) NULL,
  377.  
  378.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  379.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  380.         TROB_Space,           (ULONG) NULL,
  381.         TROB_Palette,         (ULONG) NULL,
  382.           TRAT_ID,            (ULONG) 3,
  383.           TRAT_Value,         (ULONG) 1,
  384.       TRGR_End,               (ULONG) NULL,
  385.       TROB_Space,             (ULONG) NULL,
  386.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  387.         TROB_Text,            (ULONG) NULL,
  388.           TRAT_Text,          (ULONG) "_Palette: ",
  389.           TRAT_ID,            (ULONG) 3,
  390.         TROB_Text,            (ULONG) NULL,
  391.           TRAT_Value,         (ULONG) 1,
  392.           TRAT_ID,            (ULONG) 3,
  393.           TRAT_MinWidth,      (ULONG) 3,
  394.       TROB_Space,             (ULONG) NULL,
  395.       TRGR_End,               (ULONG) NULL,
  396.     TRGR_End,                 (ULONG) NULL,
  397.  
  398.     TROB_Space,               (ULONG) NULL,
  399.  
  400.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  401.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  402.         TROB_Space,           (ULONG) NULL,
  403.         TROB_Cycle,           (ULONG) cycle_entries,
  404.           TRAT_ID,            (ULONG) 6,
  405.           TRAT_Value,         (ULONG) 4,
  406.       TRGR_End,               (ULONG) NULL,
  407.       TROB_Space,             (ULONG) NULL,
  408.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  409.         TROB_Text,            (ULONG) NULL,
  410.           TRAT_Text,          (ULONG) "C_ycle: ",
  411.           TRAT_ID,            (ULONG) 6,
  412.         TROB_Text,            (ULONG) NULL,
  413.           TRAT_Value,         (ULONG) 4,
  414.           TRAT_ID,            (ULONG) 6,
  415.           TRAT_MinWidth,      (ULONG) 3,
  416.       TROB_Space,             (ULONG) NULL,
  417.       TRGR_End,               (ULONG) NULL,
  418.     TRGR_End,                 (ULONG) NULL,
  419.  
  420.     TROB_Space,               (ULONG) NULL,
  421.  
  422.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  423.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  424.         TROB_Space,           (ULONG) NULL,
  425.         TROB_Cycle,           (ULONG) mx_entries,
  426.           TRAT_ID,            (ULONG) 13,
  427.           TRAT_Value,         (ULONG) 1,
  428.           TRAT_Flags,         (ULONG) TRCY_MX,
  429.       TRGR_End,               (ULONG) NULL,
  430.       TROB_Space,             (ULONG) NULL,
  431.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  432.         TROB_Text,            (ULONG) NULL,
  433.           TRAT_Text,          (ULONG) "_MX: ",
  434.           TRAT_ID,            (ULONG) 13,
  435.         TROB_Text,            (ULONG) NULL,
  436.           TRAT_Value,         (ULONG) 1,
  437.           TRAT_ID,            (ULONG) 13,
  438.           TRAT_MinWidth,      (ULONG) 3,
  439.         TROB_Space,           (ULONG) NULL,
  440.       TRGR_End,               (ULONG) NULL,
  441.     TRGR_End,                 (ULONG) NULL,
  442.  
  443.     TROB_Space,               (ULONG) NULL,
  444.  
  445.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  446.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  447.         TROB_Space,           (ULONG) NULL,
  448.         TROB_String,          (ULONG) "foo bar",
  449.           TRAT_ID,            (ULONG) 7,
  450.       TRGR_End,               (ULONG) NULL,
  451.       TROB_Space,             (ULONG) NULL,
  452.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  453.         TROB_Text,            (ULONG) NULL,
  454.           TRAT_Text,          (ULONG) "S_tring",
  455.           TRAT_ID,            (ULONG) 7,
  456.       TROB_Space,             (ULONG) NULL,
  457.       TRGR_End,               (ULONG) NULL,
  458.     TRGR_End,                 (ULONG) NULL,
  459.  
  460.     TROB_Space,               (ULONG) NULL,
  461.  
  462.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  463.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  464.         TROB_Space,           (ULONG) NULL,
  465.         TROB_String,          (ULONG) "",
  466.           TRAT_Flags,         (ULONG) TRST_INVISIBLE,
  467.           TRAT_ID,            (ULONG) 15,
  468.       TRGR_End,               (ULONG) NULL,
  469.       TROB_Space,             (ULONG) NULL,
  470.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  471.         TROB_Text,            (ULONG) NULL,
  472.           TRAT_Text,          (ULONG) "Pass_word",
  473.           TRAT_ID,            (ULONG) 15,
  474.       TROB_Space,             (ULONG) NULL,
  475.       TRGR_End,               (ULONG) NULL,
  476.     TRGR_End,                 (ULONG) NULL,
  477.  
  478.     TROB_Space,               (ULONG) NULL,
  479.  
  480.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  481.       TROB_Space,             (ULONG) NULL,
  482.       TROB_Line,              (ULONG) TROF_HORIZ,
  483.       TROB_Space,             (ULONG) NULL,
  484.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "BOOPSI", TRAT_Flags, (ULONG) TRTX_TITLE,
  485.       TROB_Space,             (ULONG) NULL,
  486.       TROB_Line,              (ULONG) TROF_HORIZ,
  487.       TROB_Space,             (ULONG) NULL,
  488.     TRGR_End,                 (ULONG) NULL,
  489.  
  490.     TROB_Space,               (ULONG) NULL,
  491.  
  492.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  493.       TROB_Space,             (ULONG) NULL,
  494.       TROB_Button,            (ULONG) NULL, TRAT_ID, 2, TRAT_Text, (ULONG) "_Button",
  495.       TROB_Space,             (ULONG) NULL,
  496.     TRGR_End,                 (ULONG) NULL,
  497.  
  498.     TROB_Space,               (ULONG) NULL,
  499.  
  500.     TRGR_Horiz,               (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  501.       TROB_Space,             (ULONG) NULL,
  502.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_File:", TRAT_ID, 10,
  503.       TROB_Space,             (ULONG) NULL,
  504.       TROB_Button,            (ULONG) TRBT_GETFILE, TRAT_ID, 10, TRAT_Text, (ULONG) "",
  505.       TROB_Space,             (ULONG) NULL,
  506.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Drawer:", TRAT_ID, 11,
  507.       TROB_Space,             (ULONG) NULL,
  508.       TROB_Button,            (ULONG) TRBT_GETDRAWER, TRAT_ID, 11, TRAT_Text, (ULONG) "",
  509.       TROB_Space,             (ULONG) NULL,
  510.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Entry:", TRAT_ID, 12,
  511.       TROB_Space,             (ULONG) NULL,
  512.       TROB_Button,            (ULONG) TRBT_GETENTRY, TRAT_ID, 12, TRAT_Text, (ULONG) "",
  513.       TROB_Space,             (ULONG) NULL,
  514.     TRGR_End,                 (ULONG) NULL,
  515.  
  516.     TROB_Space,               (ULONG) NULL,
  517.  
  518.     TRGR_End,                 (ULONG) NULL,
  519.  
  520.   TAG_END
  521. };
  522.  
  523.  
  524. VOID do_gadgets(VOID)
  525. {
  526.   BOOL close_me=FALSE;
  527.   struct TR_Message *trmsg;
  528.   struct TR_Project *gadgets_project;
  529.  
  530.   if(gadgets_project=TR_OpenProject(Application,gadgets_trwintags))
  531.   {
  532.     TR_LockProject(main_project);
  533.     while(!close_me)
  534.     {
  535.       TR_Wait(Application,NULL);
  536.       while(trmsg=TR_GetMsg(Application))
  537.       {
  538.         if(trmsg->trm_Project==gadgets_project) switch(trmsg->trm_Class)
  539.         {
  540.           case TRMS_CLOSEWINDOW:
  541.             close_me=TRUE;
  542.             break;
  543.  
  544.           case TRMS_ERROR:
  545.             puts(TR_GetErrorString(trmsg->trm_Data));
  546.             break;
  547.         }
  548.         TR_ReplyMsg(trmsg);
  549.       }
  550.     }
  551.     TR_UnlockProject(main_project);
  552.     TR_CloseProject(gadgets_project);
  553.   }
  554.   else DisplayBeep(NULL);
  555. }
  556.  
  557.  
  558. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  559. /* ///////////////////////////////////////////////////////////////////////////////// Window 'disabling' // */
  560. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  561.  
  562. struct TagItem disabling_trwintags[]=
  563. {
  564.   WindowID(4), WindowTitle("Disabling"), WindowPosition(TRWP_CENTERDISPLAY),
  565.  
  566.   TRGR_Vert,                  (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
  567.  
  568.     TROB_Space,               (ULONG) NULL,
  569.  
  570.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  571.       TROB_Space,             (ULONG) NULL,
  572.       TROB_CheckBox,          (ULONG) NULL, TRAT_ID, 1, TRAT_Value, TRUE,
  573.       TROB_Space,             (ULONG) NULL,
  574.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Disabled", TRAT_ID, 1,
  575.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES,
  576.         TROB_Space,           (ULONG) NULL,
  577.         TRGR_End,             (ULONG) NULL,
  578.       TRGR_End,               (ULONG) NULL,
  579.  
  580.     TROB_Space,               (ULONG) NULL,
  581.  
  582.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  583.       TROB_Space,             (ULONG) NULL,
  584.       TROB_Line,              (ULONG) TROF_HORIZ,
  585.       TROB_Space,             (ULONG) NULL,
  586.       TRGR_End,               (ULONG) NULL,
  587.  
  588.     TROB_Space,               (ULONG) NULL,
  589.  
  590.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  591.       TROB_Space,             (ULONG) NULL,
  592.       TROB_CheckBox,          (ULONG) NULL, TRAT_Value, TRUE, TRAT_ID, 2, TRAT_Disabled, TRUE,
  593.       TROB_Space,             (ULONG) NULL,
  594.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Checkbox", TRAT_ID, 2,
  595.       TROB_Space,             (ULONG) NULL,
  596.     TRGR_End,                 (ULONG) NULL,
  597.  
  598.     TROB_Space,               (ULONG) NULL,
  599.  
  600.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  601.       TROB_Space,             (ULONG) NULL,
  602.       TROB_Button,            (ULONG) NULL, TRAT_Text, (ULONG) "_Button", TRAT_ID, 3, TRAT_Disabled, TRUE,
  603.       TROB_Space,             (ULONG) NULL,
  604.     TRGR_End,                 (ULONG) NULL,
  605.  
  606.     TROB_Space,               (ULONG) NULL,
  607.  
  608.   TRGR_End,                   (ULONG) NULL,
  609.  
  610.   TAG_END
  611. };
  612.  
  613.  
  614. VOID do_disabling(VOID)
  615. {
  616.   BOOL close_me=FALSE;
  617.   struct TR_Message *trmsg;
  618.   struct TR_Project *disabling_project;
  619.  
  620.   if(disabling_project=TR_OpenProject(Application,disabling_trwintags))
  621.   {
  622.     TR_LockProject(main_project);
  623.     while(!close_me)
  624.     {
  625.       TR_Wait(Application,NULL);
  626.       while(trmsg=TR_GetMsg(Application))
  627.       {
  628.         if(trmsg->trm_Project==disabling_project) switch(trmsg->trm_Class)
  629.         {
  630.           case TRMS_CLOSEWINDOW:
  631.             close_me=TRUE;
  632.             break;
  633.  
  634.           case TRMS_ERROR:
  635.             puts(TR_GetErrorString(trmsg->trm_Data));
  636.             break;
  637.  
  638.           case TRMS_NEWVALUE:
  639.             if(trmsg->trm_ID==1)
  640.             {
  641.               TR_SetAttribute(disabling_project,2,TRAT_Disabled,trmsg->trm_Data);
  642.               TR_SetAttribute(disabling_project,3,TRAT_Disabled,trmsg->trm_Data);
  643.             }
  644.         }
  645.         TR_ReplyMsg(trmsg);
  646.       }
  647.     }
  648.     TR_UnlockProject(main_project);
  649.     TR_CloseProject(disabling_project);
  650.   }
  651.   else DisplayBeep(NULL);
  652. }
  653.  
  654.  
  655. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  656. /* ////////////////////////////////////////////////////////////////////////////////////// Window 'text' // */
  657. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  658.  
  659. ProjectDefinition(text_trwintags)
  660. {
  661.   WindowID(5), WindowTitle("Text"), WindowPosition(TRWP_CENTERDISPLAY),
  662.   VertGroupA,
  663.     Space, CenteredText("Normal text"),
  664.     Space, CenteredTextH("Highlighted text"),
  665.     Space, CenteredText3("3-dimensional text"),
  666.     Space, CenteredTextB("Bold text"),
  667.     Space, CenteredText("A _shortcut"),
  668.     Space, CenteredInteger(42),
  669.     Space, HorizGroupAC,
  670.              Space,
  671.              ClippedText("This is a very long text which is truncated to fit with TRTX_CLIPPED."),
  672.              Space, EndGroup,
  673.     Space, EndGroup, EndProject
  674. };
  675.  
  676.  
  677. VOID do_text(VOID)
  678. {
  679.   BOOL close_me=FALSE;
  680.   struct TR_Message *trmsg;
  681.   struct TR_Project *text_project;
  682.  
  683.   if(text_project=TR_OpenProject(Application,text_trwintags))
  684.   {
  685.     TR_LockProject(main_project);
  686.     while(!close_me)
  687.     {
  688.       TR_Wait(Application,NULL);
  689.       while(trmsg=TR_GetMsg(Application))
  690.       {
  691.         if(trmsg->trm_Project==text_project) switch(trmsg->trm_Class)
  692.         {
  693.           case TRMS_CLOSEWINDOW:
  694.             close_me=TRUE;
  695.             break;
  696.  
  697.           case TRMS_ERROR:
  698.             puts(TR_GetErrorString(trmsg->trm_Data));
  699.             break;
  700.         }
  701.         TR_ReplyMsg(trmsg);
  702.       }
  703.     }
  704.     TR_UnlockProject(main_project);
  705.     TR_CloseProject(text_project);
  706.   }
  707.   else DisplayBeep(NULL);
  708. }
  709.  
  710.  
  711. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  712. /* /////////////////////////////////////////////////////////////////////////////// Window 'connections' // */
  713. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  714.  
  715. ProjectDefinition(connections_trwintags)
  716. {
  717.   WindowID(6), WindowTitle("Connections"), WindowPosition(TRWP_CENTERDISPLAY),
  718.   VertGroupA,
  719.     Space,
  720.     NamedSeparatorI("_Checkmarks",1),
  721.     Space,
  722.  
  723.     HorizGroupSAC,
  724.       Space, CheckBox(1),
  725.       Space, CheckBox(1),
  726.       Space, CheckBox(1),
  727.       Space, EndGroup,
  728.  
  729.     Space,
  730.  
  731.     HorizGroupSAC,
  732.       Space, CheckBox(1),
  733.       Space, CheckBox(1),
  734.       Space, CheckBox(1),
  735.       Space, EndGroup,
  736.  
  737.     Space,
  738.     HorizGroupSAC,
  739.       Space, CheckBox(1),
  740.       Space, CheckBox(1),
  741.       Space, CheckBox(1),
  742.       Space, EndGroup,
  743.  
  744.     Space,
  745.     NamedSeparatorI("_Slider and Progress indicator",2),
  746.     Space,
  747.  
  748.     HorizGroupAC,
  749.       Space,
  750.       SliderGadget(0,10,8,2),
  751.       Space,
  752.       Integer3(8),TRAT_ID,2,TRAT_MinWidth,3,
  753.       Space,
  754.       EndGroup,
  755.  
  756.     Space,
  757.  
  758.     HorizGroupAC,
  759.       Space,
  760.       TextN("0%"),
  761.       Space,
  762.       Progress(10,8,2),
  763.       Space,
  764.       TextN("100%"),
  765.       Space,
  766.       EndGroup,
  767.  
  768.     Space,
  769.   EndGroup, EndProject
  770. };
  771.  
  772.  
  773. VOID do_connections(VOID)
  774. {
  775.   BOOL close_me=FALSE;
  776.   struct TR_Message *trmsg;
  777.   struct TR_Project *connections_project;
  778.  
  779.   if(connections_project=TR_OpenProject(Application,connections_trwintags))
  780.   {
  781.     TR_LockProject(main_project);
  782.     while(!close_me)
  783.     {
  784.       TR_Wait(Application,NULL);
  785.       while(trmsg=TR_GetMsg(Application))
  786.       {
  787.         if(trmsg->trm_Project==connections_project) switch(trmsg->trm_Class)
  788.         {
  789.           case TRMS_CLOSEWINDOW:
  790.             close_me=TRUE;
  791.             break;
  792.  
  793.           case TRMS_ERROR:
  794.             puts(TR_GetErrorString(trmsg->trm_Data));
  795.             break;
  796.         }
  797.         TR_ReplyMsg(trmsg);
  798.       }
  799.     }
  800.     TR_UnlockProject(main_project);
  801.     TR_CloseProject(connections_project);
  802.   }
  803.   else DisplayBeep(NULL);
  804. }
  805.  
  806.  
  807. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  808. /* ////////////////////////////////////////////////////////////////////////////////// Window 'backfill' // */
  809. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  810.  
  811. ProjectDefinition(backfill_trwintags)
  812. {
  813.   WindowID(7), WindowTitle("Backfill"), WindowPosition(TRWP_CENTERDISPLAY),
  814.   VertGroupA,
  815.     Space,  CenteredText("Each window and"),
  816.     SpaceS, CenteredText("FrameBox can have"),
  817.     SpaceS, CenteredText("one of the following"),
  818.     SpaceS, CenteredText("backfill patterns"),
  819.     Space,  HorizGroupA,
  820.               Space, GroupBox, ObjectBackfillS, SpaceB,
  821.               Space, GroupBox, ObjectBackfillSA, SpaceB,
  822.               Space, GroupBox, ObjectBackfillSF, SpaceB,
  823.               Space, EndGroup,
  824.     Space,  HorizGroupA,
  825.               Space, GroupBox, ObjectBackfillSB, SpaceB,
  826.               Space, GroupBox, ObjectBackfillA, SpaceB,
  827.               Space, GroupBox, ObjectBackfillAF, SpaceB,
  828.               Space, EndGroup,
  829.     Space,  HorizGroupA,
  830.               Space, GroupBox, ObjectBackfillAB, SpaceB,
  831.               Space, GroupBox, ObjectBackfillF, SpaceB,
  832.               Space, GroupBox, ObjectBackfillFB, SpaceB,
  833.               Space, EndGroup,
  834.     Space, EndGroup, EndProject
  835. };
  836.  
  837.  
  838. VOID do_backfill(VOID)
  839. {
  840.   BOOL close_me=FALSE;
  841.   struct TR_Message *trmsg;
  842.   struct TR_Project *backfill_project;
  843.  
  844.   if(backfill_project=TR_OpenProject(Application,backfill_trwintags))
  845.   {
  846.     TR_LockProject(main_project);
  847.     while(!close_me)
  848.     {
  849.       TR_Wait(Application,NULL);
  850.       while(trmsg=TR_GetMsg(Application))
  851.       {
  852.         if(trmsg->trm_Project==backfill_project) switch(trmsg->trm_Class)
  853.         {
  854.           case TRMS_CLOSEWINDOW:
  855.             close_me=TRUE;
  856.             break;
  857.  
  858.           case TRMS_ERROR:
  859.             puts(TR_GetErrorString(trmsg->trm_Data));
  860.             break;
  861.         }
  862.         TR_ReplyMsg(trmsg);
  863.       }
  864.     }
  865.     TR_UnlockProject(main_project);
  866.     TR_CloseProject(backfill_project);
  867.   }
  868.   else DisplayBeep(NULL);
  869. }
  870.  
  871.  
  872. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  873. /* ///////////////////////////////////////////////////////////////////////////////// Window 'appwindow' // */
  874. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  875.  
  876. ProjectDefinition(appwindow_trwintags)
  877. {
  878.   WindowID(8), WindowTitle("AppWindow"), WindowPosition(TRWP_CENTERDISPLAY),
  879.   VertGroupA,
  880.     Space,  CenteredText("This window is an application window."),
  881.     SpaceS, CenteredText("Drop icons into the window or into"),
  882.     SpaceS, CenteredText("the icon drop boxes below and see"),
  883.     SpaceS, CenteredText("what will happen..."),
  884.     Space,  HorizGroupA,
  885.               Space, DropBox(1),
  886.               Space, DropBox(2),
  887.               Space, EndGroup,
  888.     Space, EndGroup, EndProject
  889. };
  890.  
  891.  
  892. VOID do_appwindow(VOID)
  893. {
  894.   BOOL close_me=FALSE;
  895.   struct TR_Message *trmsg;
  896.   struct TR_Project *appwindow_project;
  897.   UBYTE reqstr[200],dirname[100];
  898.  
  899.   if(appwindow_project=TR_OpenProject(Application,appwindow_trwintags))
  900.   {
  901.     TR_LockProject(main_project);
  902.     while(!close_me)
  903.     {
  904.       TR_Wait(Application,NULL);
  905.       while(trmsg=TR_GetMsg(Application))
  906.       {
  907.         if(trmsg->trm_Project==appwindow_project) switch(trmsg->trm_Class)
  908.         {
  909.           case TRMS_CLOSEWINDOW:
  910.             close_me=TRUE;
  911.             break;
  912.  
  913.           case TRMS_ERROR:
  914.             puts(TR_GetErrorString(trmsg->trm_Data));
  915.             break;
  916.  
  917.           case TRMS_ICONDROPPED:
  918.             dirname[0]=0;
  919.             NameFromLock(((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Lock,dirname,100);
  920.             AddPart(dirname,((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Name,100);
  921.             switch(trmsg->trm_ID)
  922.             {
  923.               case 1:
  924.                 sprintf(reqstr,"Icon(s) dropped into the left box.\tName of first dropped icon:\n%%3%s",dirname);
  925.                 break;
  926.               case 2:
  927.                 sprintf(reqstr,"Icon(s) dropped into the right box.\tName of first dropped icon:\n%%3%s",dirname);
  928.                 break;
  929.               default:
  930.                 sprintf(reqstr,"Icon(s) dropped into the window.\tName of first dropped icon:\n%%3%s",dirname);
  931.             }
  932.             TR_EasyRequestTags(Application,reqstr,"_Ok",
  933.               TREZ_LockProject,appwindow_project,TREZ_Title,"AppWindow report",TREZ_Activate,TRUE,TAG_END);
  934.             break;
  935.         }
  936.         TR_ReplyMsg(trmsg);
  937.       }
  938.     }
  939.     TR_UnlockProject(main_project);
  940.     TR_CloseProject(appwindow_project);
  941.   }
  942.   else DisplayBeep(NULL);
  943. }
  944.  
  945.  
  946. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  947. /* ///////////////////////////////////////////////////////////////////////////////////// Window 'lists' // */
  948. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  949.  
  950. struct TR_Dimensions lists_dim;
  951.  
  952. extern struct List LVList1;
  953. extern struct List LVList2;
  954. extern struct List LVList3;
  955.  
  956. struct Node LVNodes1[] =
  957. {
  958.   { &LVNodes1[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  959.   { &LVNodes1[2], &LVNodes1[0],                     0, 0, "READ ONLY" },
  960.   { &LVNodes1[3], &LVNodes1[1],                     0, 0, "Listview" },
  961.   { &LVNodes1[4], &LVNodes1[2],                     0, 0, "gadget using" },
  962.   { &LVNodes1[5], &LVNodes1[3],                     0, 0, "the fixed-" },
  963.   { &LVNodes1[6], &LVNodes1[4],                     0, 0, "width font." },
  964.   { &LVNodes1[7], &LVNodes1[5],                     0, 0, "" },
  965.   { &LVNodes1[ 8], &LVNodes1[ 6],                   0, 0, "This window" },
  966.   { &LVNodes1[ 9], &LVNodes1[ 7],                   0, 0, "will remember" },
  967.   { &LVNodes1[10], &LVNodes1[ 8],                   0, 0, "its position" },
  968.   { &LVNodes1[11], &LVNodes1[ 9],                   0, 0, "even without" },
  969.   { &LVNodes1[12], &LVNodes1[10],                   0, 0, "the Preferences" },
  970.   { &LVNodes1[13], &LVNodes1[11],                   0, 0, "system, when" },
  971.   { &LVNodes1[14], &LVNodes1[12],                   0, 0, "you reopen it," },
  972.   { &LVNodes1[15], &LVNodes1[13],                   0, 0, "because it has" },
  973.   { &LVNodes1[16], &LVNodes1[14],                   0, 0, "got a dimension" },
  974.   { &LVNodes1[17], &LVNodes1[15],                   0, 0, "structure" },
  975.   { &LVNodes1[18], &LVNodes1[16],                   0, 0, "attached" },
  976.   { (struct Node *)&LVList3.lh_Tail, &LVNodes1[17], 0, 0, "to it." }
  977. };
  978.  
  979. struct Node LVNodes2[] =
  980. {
  981.   { &LVNodes2[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  982.   { &LVNodes2[2], &LVNodes2[0],                     0, 0, "SELECT" },
  983.   { &LVNodes2[3], &LVNodes2[1],                     0, 0, "Listview" },
  984.   { &LVNodes2[4], &LVNodes2[2],                     0, 0, "gadget." },
  985.   { &LVNodes2[5], &LVNodes2[3],                     0, 0, "Use the" },
  986.   { &LVNodes2[6], &LVNodes2[4],                     0, 0, "numeric" },
  987.   { &LVNodes2[7], &LVNodes2[5],                     0, 0, "key pad to" },
  988.   { &LVNodes2[8], &LVNodes2[6],                     0, 0, "move" },
  989.   { (struct Node *)&LVList3.lh_Tail, &LVNodes2[7],  0, 0, "around." }
  990. };
  991.  
  992. struct Node LVNodes3[] =
  993. {
  994.   { &LVNodes3[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  995.   { &LVNodes3[2], &LVNodes3[0],                     0, 0, "SHOW" },
  996.   { &LVNodes3[3], &LVNodes3[1],                     0, 0, "SELECTED" },
  997.   { &LVNodes3[4], &LVNodes3[2],                     0, 0, "Listview" },
  998.   { &LVNodes3[5], &LVNodes3[3],                     0, 0, "gadget." },
  999.   { &LVNodes3[6], &LVNodes3[4],                     0, 0, "This list" },
  1000.   { &LVNodes3[7], &LVNodes3[5],                     0, 0, "is a bit" },
  1001.   { &LVNodes3[8], &LVNodes3[6],                     0, 0, "longer, so" },
  1002.   { &LVNodes3[9], &LVNodes3[7],                     0, 0, "that you" },
  1003.   { &LVNodes3[10],&LVNodes3[8],                     0, 0, "can try the" },
  1004.   { &LVNodes3[11],&LVNodes3[9],                     0, 0, "other" },
  1005.   { &LVNodes3[12],&LVNodes3[10],                    0, 0, "keyboard" },
  1006.   { (struct Node *)&LVList3.lh_Tail, &LVNodes3[11], 0, 0, "shortcuts." }
  1007. };
  1008.  
  1009. struct List LVList1=
  1010. {
  1011.   (struct Node *)&LVNodes1[0],
  1012.   (struct Node *)NULL,
  1013.   (struct Node *)&LVNodes1[18],
  1014.   0,0
  1015. };
  1016.  
  1017. struct List LVList2=
  1018. {
  1019.   (struct Node *)&LVNodes2[0],
  1020.   (struct Node *)NULL,
  1021.   (struct Node *)&LVNodes2[8],
  1022.   0,0
  1023. };
  1024.  
  1025. struct List LVList3=
  1026. {
  1027.   (struct Node *)&LVNodes3[0],
  1028.   (struct Node *)NULL,
  1029.   (struct Node *)&LVNodes3[12],
  1030.   0,0
  1031. };
  1032.  
  1033.  
  1034. struct TagItem lists_trwintags[]=
  1035. {
  1036.   WindowID(9), WindowTitle("Lists"), WindowPosition(TRWP_CENTERDISPLAY), WindowDimensions(&lists_dim),
  1037.   HorizGroupA, Space, VertGroupA,
  1038.     Space,
  1039.     NamedSeparatorIN("_Read only",1),
  1040.     Space,
  1041.     FWListROCN(&LVList1,1,0),
  1042.     Space,
  1043.     NamedSeparatorIN("_Select",2),
  1044.     Space,
  1045.     ListSelC(&LVList2,2,0),
  1046.     Space,
  1047.     NamedSeparatorIN("S_how selected",3),
  1048.     Space,
  1049.     ListSSN(&LVList3,3,0,1),
  1050.     Space,
  1051.   EndGroup, Space, EndGroup,
  1052.   EndProject
  1053. };
  1054.  
  1055.  
  1056. VOID do_lists(VOID)
  1057. {
  1058.   BOOL close_me=FALSE;
  1059.   struct TR_Message *trmsg;
  1060.   struct TR_Project *lists_project;
  1061.  
  1062.   if(lists_project=TR_OpenProject(Application,lists_trwintags))
  1063.   {
  1064.     TR_LockProject(main_project);
  1065.     while(!close_me)
  1066.     {
  1067.       TR_Wait(Application,NULL);
  1068.       while(trmsg=TR_GetMsg(Application))
  1069.       {
  1070.         if(trmsg->trm_Project==lists_project) switch(trmsg->trm_Class)
  1071.         {
  1072.           case TRMS_CLOSEWINDOW:
  1073.             close_me=TRUE;
  1074.             break;
  1075.  
  1076.           case TRMS_ERROR:
  1077.             puts(TR_GetErrorString(trmsg->trm_Data));
  1078.             break;
  1079.         }
  1080.         TR_ReplyMsg(trmsg);
  1081.       }
  1082.     }
  1083.     TR_UnlockProject(main_project);
  1084.     TR_CloseProject(lists_project);
  1085.   }
  1086.   else DisplayBeep(NULL);
  1087. }
  1088.  
  1089.  
  1090. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1091. /* ///////////////////////////////////////////////////////////////////////////////////// Window 'about' // */
  1092. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1093.  
  1094. /* Note: This could be done even simpler with TR_EasyRequest().       */
  1095. /* ~~~~~ It is done with TR_AutoRequest() to show you how this works. */
  1096. /*       See window 'AppWindow' for a TR_EasyRequest() example.       */
  1097.  
  1098. ProjectDefinition(about_trwintags)
  1099. {
  1100.   BeginRequester("About...",TRWP_CENTERDISPLAY),
  1101.  
  1102.   VertGroupA, Space,  CenteredText3("Triton Demo 1.3"),
  1103.               SpaceS, CenteredText("© 1993-1995 by Stefan Zeiger"),
  1104.               Space,  HorizSeparator,
  1105.               Space,  CenteredText("This program is using the"),
  1106.               SpaceS, CenteredText("Triton GUI creation system"),
  1107.               SpaceS, CenteredText("which is © by Stefan Zeiger"),
  1108.               Space,  EndGroup,
  1109.  
  1110.   BeginRequesterGads,
  1111.   CenteredButtonRE("_Ok",1),
  1112.   EndRequester
  1113. };
  1114.  
  1115.  
  1116. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1117. /* ////////////////////////////////////////////////////////////////////////////////////// Window 'main' // */
  1118. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1119.  
  1120. ProjectDefinition(main_trwintags)
  1121. {
  1122.   WindowID(10), WindowTitle("Triton Demo"), WindowPosition(TRWP_CENTERDISPLAY), WindowFlags(TRWF_HELP),
  1123.   BeginMenu("Project"),
  1124.     MenuItem("?_About...",101),
  1125.     ItemBarlabel,
  1126.     MenuItem("H_Help",102),
  1127.     MenuItemC("I_QuickHelp",104),
  1128.     ItemBarlabel,
  1129.     MenuItem("Q_Quit",103),
  1130.   VertGroupA,
  1131.     Space,  CenteredText3("T · r · i · t · o · n"),
  1132.     Space,  CenteredText3("The object oriented GUI creation system"),
  1133.     Space,  CenteredText("Demo program for release 1.3"),
  1134.     Space,  CenteredText("Written and © 1993-1995 by Stefan Zeiger"),
  1135.     Space,  HorizSeparator,
  1136.     Space,  HorizGroupEA,
  1137.               Space, Button("_Gadgets",1), QuickHelp("Show some gadget types"),
  1138.               Space, Button("G_roups",2), QuickHelp("Show group types"),
  1139.               Space, Button("_Text",3), QuickHelp("Show text types"),
  1140.               Space, EndGroup,
  1141.     Space, HorizGroupEA,
  1142.               Space, Button("_Connections",4), QuickHelp("Demonstrate object notification"),
  1143.               Space, Button("_Backfill",5), QuickHelp("Show basic backfill types"),
  1144.               Space, Button("_Disabling",6), QuickHelp("Show disabled objects"),
  1145.               Space, EndGroup,
  1146.     Space, HorizGroupEA,
  1147.               Space, Button("_AppWindow",7), QuickHelp("Demonstrate AppWindow feature"),
  1148.               Space, Button("_Menus",8), QuickHelp("Show a sample menu"),
  1149.               Space, Button("_Lists",9), QuickHelp("Show listview gadgets"),
  1150.               Space, EndGroup,
  1151.     Space, EndGroup, EndProject
  1152. };
  1153.  
  1154.  
  1155. VOID do_main(VOID)
  1156. {
  1157.   BOOL close_me=FALSE;
  1158.   struct TR_Message *trmsg;
  1159.   UBYTE reqstr[256];
  1160.   STRPTR helpString;
  1161.  
  1162.   if(main_project=TR_OpenProject(Application,main_trwintags))
  1163.   {
  1164.     while(!close_me)
  1165.     {
  1166.       TR_Wait(Application,NULL);
  1167.       while(trmsg=TR_GetMsg(Application))
  1168.       {
  1169.         if(trmsg->trm_Project==main_project) switch(trmsg->trm_Class)
  1170.         {
  1171.           case TRMS_CLOSEWINDOW:
  1172.             close_me=TRUE;
  1173.             break;
  1174.  
  1175.           case TRMS_HELP:
  1176.         if(helpString=(STRPTR)TR_GetAttribute(main_project,trmsg->trm_ID,TRDO_QuickHelpString))
  1177.           sprintf(reqstr,"Help for object %ld:\n%%h%s",trmsg->trm_ID,helpString);
  1178.         else
  1179.           sprintf(reqstr,"No help available for object %ld.",trmsg->trm_ID);
  1180.             TR_EasyRequestTags(Application,reqstr,"_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
  1181.             break;
  1182.  
  1183.           case TRMS_ERROR:
  1184.             puts(TR_GetErrorString(trmsg->trm_Data));
  1185.             break;
  1186.  
  1187.           case TRMS_NEWVALUE:
  1188.             if(trmsg->trm_ID==104) TR_SetAttribute(main_project,0,TRWI_QuickHelp,trmsg->trm_Data);
  1189.             break;
  1190.  
  1191.           case TRMS_ACTION:
  1192.             switch(trmsg->trm_ID)
  1193.             {
  1194.               case 1:
  1195.                 do_gadgets();
  1196.                 break;
  1197.               case 2:
  1198.                 do_groups();
  1199.                 break;
  1200.               case 3:
  1201.                 do_text();
  1202.                 break;
  1203.               case 4:
  1204.                 do_connections();
  1205.                 break;
  1206.               case 5:
  1207.                 do_backfill();
  1208.                 break;
  1209.               case 6:
  1210.                 do_disabling();
  1211.                 break;
  1212.               case 7:
  1213.                 do_appwindow();
  1214.                 break;
  1215.               case 8:
  1216.                 do_menus();
  1217.                 break;
  1218.               case 9:
  1219.                 do_lists();
  1220.                 break;
  1221.               case 101:
  1222.                 TR_AutoRequest(Application,main_project,about_trwintags);
  1223.                 break;
  1224.               case 102:
  1225.                 TR_EasyRequestTags(Application,"To get help, move the mouse pointer over\nany gadget or menu item and press <Help>\nor turn on QuickHelp before.","_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
  1226.                 break;
  1227.               case 103:
  1228.                 close_me=TRUE;
  1229.             }
  1230.             break;
  1231.         }
  1232.         TR_ReplyMsg(trmsg);
  1233.       }
  1234.     }
  1235.     TR_CloseProject(main_project);
  1236.   }
  1237.   else DisplayBeep(NULL);
  1238. }
  1239.  
  1240.  
  1241. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1242. /* ////////////////////////////////////////////////////////////////////////////////////// Main function // */
  1243. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1244.  
  1245. int main(void)
  1246. {
  1247.   if(TR_OpenTriton(TRITON13VERSION,
  1248.            TRCA_Name,"TritonDemo",
  1249.            TRCA_LongName,"Triton demo",
  1250.            TRCA_Version,"1.3",TAG_END))
  1251.   {
  1252.     do_main();
  1253.     TR_CloseTriton();
  1254.     return 0;
  1255.   } else puts("Can't open triton.library v4+.");
  1256.  
  1257.   return 20;
  1258. }
  1259.